package com.mashiro.system.mapper;

import com.mashiro.system.domain.MoeMessage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 消息Mapper接口
 *
 * @author mashiro
 * @date 2023-04-14
 */
public interface MoeMessageMapper {
    /**
     * 查询消息
     *
     * @param id 消息主键
     * @return 消息
     */
    public MoeMessage selectMoeMessageById(Long id);

    /**
     * 查询消息列表
     *
     * @param moeMessage 消息
     * @return 消息集合
     */
    public List<MoeMessage> selectMoeMessageList(MoeMessage moeMessage);

    /**
     * 新增消息
     *
     * @param moeMessage 消息
     * @return 结果
     */
    public int insertMoeMessage(MoeMessage moeMessage);

    /**
     * 修改消息
     *
     * @param moeMessage 消息
     * @return 结果
     */
    public int updateMoeMessage(MoeMessage moeMessage);

    /**
     * 删除消息
     *
     * @param id 消息主键
     * @return 结果
     */
    public int deleteMoeMessageById(Long id);

    /**
     * 批量删除消息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMoeMessageByIds(Long[] ids);

    /**
     * 根据用户获取未读消息数量
     *
     * @param id 用户
     * @return 结果
     */
    public int countByReceiverId(@Param("id") Long id);

    /**
     * 根据消息批量修改阅读状态
     *
     * @param moeMessage 消息
     * @return 结果
     */
    public int updateMoeMessageReadStatus(@Param("moeMessage") MoeMessage moeMessage, @Param("messageIds") Long[] messageIds);

    /**
     * 查询消息
     *
     * @param id 消息主键
     * @return 消息
     */
    public List<MoeMessage> selectMoeMessageListByNoticeId(Long id);
}
